namespace mm{
    type ReturnData = {}
    interface ViewController<T extends ReturnData>{
        render(t:T):void;
    }
    interface DataController<K,R extends ReturnData>{
        request(k:K):R
    }

    class V1DataController implements DataController<string,ReturnData>{
        request(k: string): ReturnData {
            return{}
        }
    }  
        
    class View implements ViewController<ReturnData>{
        constructor(){
            this.init()
        }
        init(): void {
            const res = new V1DataController().request("")
            this.render(res)
        }
        render(params: ReturnData): void {
            console.log(params)
        }
    }
}